import moment from 'moment';

export function handleDefaultValue(value, item) {
  let myFunction = DEFAULT_CODE_PROCESS_MAP[item.criteriaCode] || DEFAULT_CODE_PROCESS_MAP['default'];
  return myFunction(value);
}

const DEFAULT_CODE_LIST = [
  'manual_input', 'approver_title', 'approver_duty', 'cost_center_item_code_from', 'cost_center_item_code_to',
  'drawee', 'departure_hot_city', 'hot_city', 'business_code', 'receipt_num', 'receipt_code',
  'manual_input_like',
  //自定义报表后 可能会加的
  'car_type', 'reject_type', 'take_taxi_way', 'expense_type_category', 'year_month_day_date',
  'toll_type', 'toll_zero_tax_flag'


]; // 使用默认输入组件的code，这里仅做记录，最终使用的是DEFAULT_CODE_MAP.default


//改动过的组件
//'department'


//落下的组件   币种  成本中心 123  费用类型  收款方 收款方类型 单据币种 本位币  付款币种 发票袋编号
//账号（airplus明细表）


//经典的 value label 模式
//做个统计

const VALUE_LABEL_LIST = [
  'receipt_status', 'city', 'payment_type', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
];

function valueLabelFunction(item) {
  if (item && item.value) {
    return [{
      label: item && item.label || null,
      value: item && item.value || null,
      key: null
    }];
  } else {
    return undefined;
  }

}

function valueLabelArrayFunction(value) {
  if (value && value.length && value[0].value) {
    return value.map(item => {
      return {
        label: item.label,
        value: item.value,
        key: null
      };
    });
  } else {
    return null;
  }
}

/**
 * code to search item
 *
 */
const DEFAULT_CODE_PROCESS_MAP = {

  'expense_type_category': (value) => {
    return value && [{ label: value.name, value: value.id, key: 'id', nameKey: 'name' }];
  },

  // 没有 'date':
  'date_month': (value) => {
    if (value && value.length) {
      let copyValue = value.map(item => {
        if (item === undefined) {
          return moment(new Date())
            .format('YYYY-MM');
        } else {
          return item;
        }
      });
      let reverse = false;
      if (moment(copyValue[0]) > moment(copyValue[1])) {
        reverse = true;
      }
      reverse && copyValue.reverse();
      return copyValue.map(item => {
        return { value: item, key: null, label: null };
      });
    } else {
      return null;
    }
  },
  // 没有 'slave_date_default':
  'slave_date': (value) => {
    if (value && value.length) {
      let copyValue = value.map(item => {
        if (item === undefined) {
          return moment(new Date())
            .format('YYYY-MM-DD');
        } else {
          return item;
        }
      });
      let reverse = false;
      if (moment(copyValue[0]) > moment(copyValue[1])) {
        reverse = true;
      }
      reverse && copyValue.reverse();
      return copyValue.map(item => {
        return { value: item, key: null, label: null };
      });
    } else {
      return null;
    }
  },
  // 没有 'single_date':
  'year_month_date': (value) => {
    return [{
      value: value && moment(value)
        .format('YYYY-MM')
    }] || null;
  },
  'year_month_day_date': (value) => {
    return [{
      value: value && moment(value)
        .format('YYYY-MM-DD')
    }] || null;
  },
  // 没有 'year':
  // 没有 'cost_center_item_status':
  'city': valueLabelFunction,
  // 没有 'receipt_label_types':
  // 没有 'is_vat_invoice':
  // 'airPlusCode': 看怎么处理
  // 'source': 字段重复 (已处理为 input)
  // 没有 'payee_type_list':
  'department': (value) => {
    return value && value.length && value.map(item => {
      return { key: 'departmentOid', value: item.departmentOid, label: item.name, nameKey: 'name' };
    });
  },
  // 没有 'expense_department_code':
  'books': (value) => {
    return value && value.length && value.map(item => {
      return {
        key: 'setOfBooksId',
        value: item.setOfBooksId,
        label: item.setOfBooksName_functionalCurrencyCode,
        nameKey: 'setOfBooksName_functionalCurrencyCode'
      };
    });
  },
  'legal': (value) => {
    return value && value.length && value.map(item => {
      return {
        key: 'companyReceiptedOID',
        value: item.companyReceiptedOID,
        label: item.companyName,
        nameKey: 'companyName'
      };
    });
  },
  'company': (value) => {
    return value && value.length && value.map(item => {
      return {
        key: 'companyOID',
        value: item.companyOID,
        label: item.companyName,
        nameKey: 'companyName'
      };
    });
  },
  'rejecter': (value) => {
    return value && value.length && value.map(item => {
      return { key: 'userOID', value: item.userOID, label: item.fullName, nameKey: 'fullName' };
    });
  },
  // 没有 'borrower':
  'form_oid_list': valueLabelFunction,
  'tr_ea_form_oid_list': valueLabelFunction,
  'rejectnode': valueLabelFunction,
  'currency': (value) => {
    return value && [{
      label: value.currencyName,
      value: value.currencyCode,
      key: 'currencyCode',
      nameKey: 'currencyName'
    }];
  },
  'repayment_type_list': valueLabelFunction,
  'payment_type_list': valueLabelArrayFunction,
  'document_type_list': valueLabelArrayFunction,
  'payment_status_list': valueLabelArrayFunction,
  'repayment_status_list': valueLabelArrayFunction,
  'invoice': valueLabelFunction,
  // 没有 'form_type_list':
  'reimb_status': valueLabelArrayFunction,
  // 没有 'report_status_add_vendor':
  'loan_status': valueLabelArrayFunction,
  'app_status': valueLabelArrayFunction,
  'reimbursement_type': valueLabelFunction,
  'application_type': valueLabelFunction,
  // 没有 'ta_ea_application_type':
  // 没有 'trip':
  'inv_type': valueLabelArrayFunction,
  // 没有 'inv_status':
  // 没有 'inv_check_result':
  // 没有 'compliant':
  'corp_card_status': valueLabelArrayFunction,
  'act_nam': (value) => {
    return value && value.length && value.map(item => {
      return { key: 'userOID', value: item.userOID, label: item.fullName, nameKey: 'fullName' };
    });
  },
  'hotel_order_type': valueLabelFunction,
  'flight_order_type': valueLabelFunction,
  'invoice_tag_list': valueLabelFunction,
  // 没有'user_oid':
  // 没有 'form_label_list':
  'receipt_status': valueLabelFunction,
  // 没有 'receipt_date':
  // 没有 'expense_create_date':
  // 没有 'expense_receipt_date':
  'form_name_list': (value) => {
    return value && value.length && value.map(item => {
      return { key: 'formOID', value: item.formOID, label: item.formName, nameKey: 'formName' };
    });
  },
  'payment_type': valueLabelFunction,
  // 没有 'loan_bill_type':
  // 没有 'report_type_add_vendor':
  'cost': (value) => {
    return value && value.length && value.map(item => {
      return {
        key: 'costCenterItemOID',
        value: item.costCenterItemOID,
        label: item.name,
        nameKey: 'name'
      };
    });
  },
  // 没有 'cost_center_code':
  'expense_type': (value) => {
    return value && value.length && value.map(item => {
      return { key: 'id', value: item.id, label: item.name, nameKey: 'name' };
    });
  },
  // 没有 'cost_center_item_code_from_to':
  'exp_rpt_bag': (value) => {
    return value && value.isRefBagCode && [{
      value: {
        isRefBagCode: value.isRefBagCode,
        expBagCode: value.expBagCode || ''
      }
    }];
  },
  'payee_type_and_id': (value) => {
    if (value && value.payeeId && value.payeeId.length) {
      let payeeType = value.payeeType;
      if (payeeType === '1001') {
        return value.payeeId.map((item) => {
          return {
            payeeType,
            payeeId: item.id,
            venNickname: item.venNickname,
            key: 'id',
            nameKey: 'venNickname'
          };
        });
      } else {
        return value.payeeId.map((item) => {
          return {
            payeeType,
            payeeId: item.userOID,
            fullName: item.fullName,
            key: 'userOID',
            nameKey: 'fullName'
          };
        });
      }
    } else {
      return null;
    }
  },
  'contain_choose_form_labels': valueLabelArrayFunction,
  // 没有 'contain_choose_receipt_labels':
  'contain_choose_invoice_labels': valueLabelArrayFunction,
  'default': (value) => {
    return value ? [{ value }] : null;
  }
};
